/**
 * jims
 */
package com.jims.master.modules.doctor.dao;

import com.jims.master.common.persistence.CrudDao;
import com.jims.master.common.persistence.annotation.MyBatisDao;
import com.jims.master.common.web.impl.BaseDto;
import com.jims.master.modules.doctor.entity.PatVisit;
import com.jims.master.modules.finance.entity.InpBillDetail;
import org.apache.ibatis.annotations.Param;

import java.util.List;
/**
 * 病人在院信息DAO接口
 * @author 赵宁
 * @version 2017-03-27
 */
@MyBatisDao
public interface PatVisitDao extends CrudDao<PatVisit> {
    /**
     * 查询住院病人列表
     *
     * @param patVisit
     * @return
     * @author 赵宁
     */
    public List<PatVisit> findPatVisit(PatVisit patVisit);

    /**
     * 获取病人住院信息
     * @param patVisit
     * @return
     * @author 赵宁
     * @date 2017-7-24
     */
    public PatVisit getPatient(PatVisit patVisit);



    /**
     * 根据住院号查询 基本信息以及预交金
     *
     * @param visitNo
     * @param orgId
     * @return
     * @author 赵宁
     */
    public PatVisit findPatVisitByVisitNo(@Param("visitNo") String visitNo, @Param("orgId") String orgId);

    /**
     * 获取最大住院号
     *
     * @return
     * @author 陈涛
     */

    public String getMaxVisitNo(@Param("visitNo") String visitNo,@Param("orgId") String orgId);

    /**
     * 更改预交金余额
     * @param id
     * @param prepayments
     * @return
     * @author 陈涛
     */
    public int updatePrepayments(@Param("id") String id, @Param("prepayments") Double prepayments);

    public String getMaxVisitNo();

    /**
     * 查询患者相关信息
     *
     * @param patientId
     * @return
     */
    public PatVisit findCommonInfo(@Param("patientId") String patientId,@Param("visitId") String visitId);

    /**
     * 根据患者ID获取患者住院信息
     * @param patientId
     * @return
     * @author fengyg
     */
    public PatVisit getPatientInfo(@Param("patientId")String patientId);

    public int updateUser(PatVisit patVisit);

    /**
     * 护士端--根据住院号，床号，床标号查询病人信息
     * @param patVisit
     * @return
     * @author 赵宁
     */
    public PatVisit getPatInfo(PatVisit patVisit);

    /**
     * 床头卡片打印查询
     * @param patVisit
     * @return
     * @author CTQ
     */
    public BaseDto findBedCardPrint(PatVisit patVisit);

    /**
     * 根据条件查询在院病人信息列表
     * @param patVisit
     * @return
     * @author CTQ
     */
    public List<BaseDto> findPatientList(PatVisit patVisit);

    /**
     * 根据条件查询出院病人信息列表
     * @param patVisit
     * @return
     * @author CTQ
     */
    public List<BaseDto> finOutPatientList(PatVisit patVisit);

    /**
     * 卡片打印
     * @param patVisit
     * @return
     * @author 杨富达
     */
    public List<BaseDto> bedsideCardPrint(PatVisit patVisit);

    /**
     * 联合查询病人在院基本信息以及费用
     * @param inpBillDetail
     * @return PatVisit
     * @author 赵宁
     */
    public PatVisit getPatBillInfo(InpBillDetail inpBillDetail);

    public PatVisit getPrintInfo(@Param("id")String id);


    /**
     * 根据条件查询在院病人列表
     * @param patVisit
     * @return
     * @author 	CTQ
     */
    public List<PatVisit> findBedCard(PatVisit patVisit);

    /**
     * 住院修改信息
     * @param patVisit
     * @return
     */
    public int updateInfo(PatVisit patVisit);

    /**
     * 获取待退药医嘱患者列表
     * @param patVisit
     * @return
     */
    public List<PatVisit> findByDrugIn(PatVisit patVisit);

    /**
     * 获取病人最大就诊次数
     * @param patientId
     * @return
     */
    public Integer getMaxVisitNumber(@Param("patientId") String patientId,@Param("orgId") String orgId);
}